# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import cloudstorage
import logging
import traceback

import cache

def read(config_helper, file_name):
  content = cache.get_content(file_name)
  if content:
    return content
  # Sometimes remote calls fail for different reasons. Make sure we retry.
  full_path = config_helper.get_full_path(file_name)
  try:
    with cloudstorage.open(full_path, 'r') as stream:
      content = stream.read()
      cache.set_content(file_name, content)
      return content
  except:
    logging.error('Full path: %s' % full_path)
    logging.error(traceback.format_exc())
  return None
